package com.junyi.guava;

import com.google.common.collect.ArrayListMultimap;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * 一个 Key 映射 多个 Value
 * @time: 2022/4/7 17:23
 * @version: 1.0
 * @author: junyi Xu
 */
@Slf4j
public class MultiMapMy {


    @Test
    public void test() {
        ArrayListMultimap<String, String> multimap = ArrayListMultimap.create();
        multimap.put("aa", "water");
        multimap.put("aa", "monitor");
        multimap.put("bb", "computer");

        List<String> list = multimap.get("aa");
        log.info("{}", list);
        log.info("size: {}", multimap.size());      // 3
        log.info("Key size: {}", multimap.keySet().size());      // 2

        List<String> listDD = multimap.get("dd");   // 对于不存在的 Key，返回空集合
        log.info("{}", listDD.size());

        // 需要注意的是，修改get后的集合，会影响原来的数据
        list.add("science");
        log.info("{}", multimap.toString());

        // 转换为 Map
        Map<String, Collection<String>> map = multimap.asMap();
        log.info("{}", map.toString());


    }
}
